import argparse

def GetParamCora():
# log/20201213071017_34c20Cora_autotrain,batch_size_2708_,
# v_0.0012_,dropedgerate_0.001_,embdim_200_,perplexity_60_,
# enlarge_30_,r_e_1.0_,r_p_0.95_/train_epoch_em1000.pngacc,0.7507385524372231

    parser = argparse.ArgumentParser(description='zelin zang author')
    parser.add_argument('--name', type=str, default='Cora_T', )
    parser.add_argument('--loadfromjson', type=str, default='', )

    # data set param
    parser.add_argument('--method', type=str, default='LISv2_mm', )
    parser.add_argument('--data_name', type=str, default='Cora', )
    parser.add_argument('--data_trai_n', type=int, default=50000, )

    # model param
    parser.add_argument('--v', type=float, default=0.0012, )
    parser.add_argument('--dropedgerate', type=float, default=0.001, )
    parser.add_argument('--embdim', type=int, default=200, )
    parser.add_argument('--perplexity', type=int, default=60, )
    parser.add_argument('--enlarge', type=float, default=30, )
    parser.add_argument('--r_e', type=float, default=1.0, )
    parser.add_argument('--r_p', type=float, default=0.95, )
    parser.add_argument('--NNmethod', type=str, default='gcn', )
    parser.add_argument('--pow', type=float, default=2.0, )

    # train param
    parser.add_argument('--batch_size', type=int, default=2708, )
    parser.add_argument('--epochs', type=int, default=1000)
    parser.add_argument('--lr', type=float, default=1e-3, metavar='LR', )
    parser.add_argument('--seed', type=int, default=1, metavar='S', )
    parser.add_argument('--log_interval', type=int, default=100)

    args = parser.parse_args().__dict__

    args['data_test_n'] = args['data_trai_n']
    # args['vtrace'][0] = args['v']
    args['batch_size'] = min(
        args['batch_size'], args['data_trai_n'], args['data_test_n'], )

    if len(args['loadfromjson']) > 1:
        import json
        loadPath = args['loadfromjson']
        strs = open(loadPath, 'r').read()
        args = json.loads(strs)

    return args


def GetParamCiteseer():
# log/20201214082302_12b58citeseer_autotrain,batch_size_3327_,
# v_0.0034_,dropedgerate_0.01_,embdim_200_,perplexity_100_,
# enlarge_50_,r_e_1.0_,r_p_0.43_/train_epoch_em100.pngacc,0.6955214908325819



    parser = argparse.ArgumentParser(description='zelin zang author')
    parser.add_argument('--name', type=str, default='citeseer_T', )
    parser.add_argument('--loadfromjson', type=str, default='', )

    # data set param
    parser.add_argument('--method', type=str, default='LISv2_mm', )
    parser.add_argument('--data_name', type=str, default='citeseer', )
    parser.add_argument('--data_trai_n', type=int, default=50000, )

    # model param
    parser.add_argument('--perplexity', type=int, default=100, )
    parser.add_argument('--embdim', type=int, default=200, )
    parser.add_argument('--pow', type=float, default=2.0, )
    parser.add_argument('--r_e', type=float, default=1.0, )
    parser.add_argument('--r_p', type=float, default=0.43, )
    parser.add_argument('--v', type=float, default=0.0034, )
    parser.add_argument('--enlarge', type=float, default=50, )
    # parser.add_argument('--NNmethod', type=str, default='gcn+NN', )
    parser.add_argument('--NNmethod', type=str, default='gcn', )
    parser.add_argument('--dropedgerate', type=float, default=0.01, )

    # train param
    parser.add_argument('--batch_size', type=int, default=3327, )
    parser.add_argument('--epochs', type=int, default=250)
    parser.add_argument('--lr', type=float, default=1e-3, metavar='LR', )
    parser.add_argument('--seed', type=int, default=1, metavar='S', )
    parser.add_argument('--log_interval', type=int, default=20)

    args = parser.parse_args().__dict__

    args['data_test_n'] = args['data_trai_n']
    # args['vtrace'][0] = args['v']
    args['batch_size'] = min(
        args['batch_size'], args['data_trai_n'], args['data_test_n'], )

    if len(args['loadfromjson']) > 1:
        import json
        loadPath = args['loadfromjson']
        strs = open(loadPath, 'r').read()
        args = json.loads(strs)

    return args


def GetParamPubmed():

    parser = argparse.ArgumentParser(description='zelin zang author')
    parser.add_argument('--name', type=str, default='pubmed_T', )
    parser.add_argument('--loadfromjson', type=str, default='', )

    # data set param
    parser.add_argument('--method', type=str, default='LISv2_mm', )
    parser.add_argument('--data_name', type=str, default='pubmed', )
    parser.add_argument('--data_trai_n', type=int, default=25000, )

    # model param
    parser.add_argument('--perplexity', type=int, default=20, )
    parser.add_argument('--embdim', type=int, default=200, )
    parser.add_argument('--pow', type=float, default=2.0, )
    parser.add_argument('--r_e', type=float, default=1.0, )
    parser.add_argument('--r_p', type=float, default=60.0, )
    parser.add_argument('--v', type=float, default=0.003, )
    parser.add_argument('--enlarge', type=float, default=1.1, )
    parser.add_argument('--NNmethod', type=str, default='gcn', )
    parser.add_argument('--dropedgerate', type=float, default=0.01, )

    # train param
    parser.add_argument('--batch_size', type=int, default=10000, )
    parser.add_argument('--epochs', type=int, default=400)
    parser.add_argument('--lr', type=float, default=1e-2, metavar='LR', )
    parser.add_argument('--seed', type=int, default=1, metavar='S', )
    parser.add_argument('--log_interval', type=int, default=100)
    args = parser.parse_args().__dict__

    args['data_test_n'] = args['data_trai_n']
    # args['vtrace'][0] = args['v']
    args['batch_size'] = min(
        args['batch_size'], args['data_trai_n'], args['data_test_n'], )

    if len(args['loadfromjson']) > 1:
        import json
        loadPath = args['loadfromjson']
        strs = open(loadPath, 'r').read()
        args = json.loads(strs)

    return args

def GetParamWiki():
# "log/20201215013609_4cc41wiki_autotrain,v_0.02_,dropedgerate_0.01_,embdim_200_,
# perplexity_80_,enlarge_10_,r_e_1.0_,r_p_125_/train_epoch_em80.png",
# 0.02,0.01,200.0,80.0,10.0,1.0,125.0,0.5376299376299376


    parser = argparse.ArgumentParser(description='zelin zang author')
    parser.add_argument('--name', type=str, default='wiki_T', )
    parser.add_argument('--loadfromjson', type=str, default='', )

    # data set param
    parser.add_argument('--method', type=str, default='LISv2_mm', )
    parser.add_argument('--data_name', type=str, default='wiki', )
    parser.add_argument('--data_trai_n', type=int, default=25000, )


    # model param
    parser.add_argument('--perplexity', type=int, default=80, )
    parser.add_argument('--embdim', type=int, default=200, )
    parser.add_argument('--pow', type=float, default=2.0, )
    parser.add_argument('--r_e', type=float, default=1.0, )
    parser.add_argument('--r_p', type=float, default=125, )
    parser.add_argument('--v', type=float, default=0.02, )
    parser.add_argument('--enlarge', type=float, default=10, )
    parser.add_argument('--NNmethod', type=str, default='gcn', )
    parser.add_argument('--dropedgerate', type=float, default=0.01, )

    # train param
    parser.add_argument('--batch_size', type=int, default=10000, )
    parser.add_argument('--epochs', type=int, default=400)
    parser.add_argument('--lr', type=float, default=1e-2, metavar='LR', )
    parser.add_argument('--seed', type=int, default=1, metavar='S', )
    parser.add_argument('--log_interval', type=int, default=20)

    args = parser.parse_args().__dict__

    args['data_test_n'] = args['data_trai_n']
    # args['vtrace'][0] = args['v']
    args['batch_size'] = min(
        args['batch_size'], args['data_trai_n'], args['data_test_n'], )

    if len(args['loadfromjson']) > 1:
        import json
        loadPath = args['loadfromjson']
        strs = open(loadPath, 'r').read()
        args = json.loads(strs)

    return args